package com.colabo.j2ee.web.oaf.monitorperspective.action;

import java.util.Date;

import com.colabo.j2ee.web.core.context.ContextUtil;
import com.colabo.j2ee.web.core.exception.ServiceException;
import com.colabo.j2ee.web.core.persistence.DateToStringUserType;
import com.colabo.j2ee.web.oaf.monitorperspective.IHistoryOnlineService;
import com.colabo.j2ee.web.oaf.vo.IPHistoryOnlineVO;

public class UserMonitorViewAction  {
	private IHistoryOnlineService hisService = (IHistoryOnlineService) ContextUtil.getBean(IHistoryOnlineService.BEAN_ID);
	public String loadOnlineUsers() {
		String ret = "";
		return ret;
	}
	
	public int loadMaximumUsersCountInHistory() {
		int maxCount = 0;
		try {
			IPHistoryOnlineVO hisrec = (IPHistoryOnlineVO) hisService.getMaxOnlineRec();
			int currentCount = loadCurrentMaximumUsersCount();
			if (hisrec != null) {
				maxCount = hisrec.getHisCount().intValue();
				if (currentCount > maxCount) {
					maxCount = currentCount;
				}
			} else {
				if (currentCount > 0) {
					maxCount = currentCount;
				}
			}
		
		} catch (ServiceException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return maxCount;
	}
	
	public int loadCurrentMaximumUsersCount() {
		return 0;
	}

	public void refresh( ) {
//		Dataset ds = context.getDataset("Dataset_log");
//		ds.clear();
//		Vector onLineUsers = new Vector();
//		onLineUsers = OnlineCountListener.onLineUsers;
//		// 刷新当前在线用户数，和历史最高用户数 Modified by Anthony on 2009-12-09
//		IHistoryOnlineService hisService = (IHistoryOnlineService) this.getBean(IHistoryOnlineService.BEAN_ID);
//		String labOnline = "&nbsp&nbsp当前在线人数:"; // 在线用户数
//		String labNum = "历史最高在线人数:"; // 历史最高用户数
//		String labTime = "发生时间:"; // 历史最高用户数发生时间
//		
//		try {
//			// 历史在线记录数据
//			IPHistoryOnlineVO hisrec = (IPHistoryOnlineVO) hisService.getMaxOnlineRec();
//			// 最近用户登录时间
//			SessionUserHolder latestUser = (SessionUserHolder) onLineUsers.get(onLineUsers.size() - 1);
//			String latestLoginTime = latestUser.getLoginTime();
//			labOnline += onLineUsers.size(); // 在线用户数
//			if (hisrec != null) {
//				long maxCount = hisrec.getHisCount().longValue();
//				if (onLineUsers.size() > maxCount) { // 当前用户数大于历史最高
//					maxCount = onLineUsers.size();
//					labTime += latestLoginTime;
//					// 记录当前信息到历史最大记录表
//					IPHistoryOnlineVO newHisrec = new IPHistoryOnlineVO(); 
//					newHisrec.setHisCount(new Long(maxCount));
//					newHisrec.setHisTime(latestLoginTime);
//					hisService.saveHistoryOnline(newHisrec);
//				} else { // 当前用户不大于历史最高
//					labTime += hisrec.getHisTime();
//				}
//				labNum += maxCount;
//			} else { // 没有历史记录，取当前状态
//				if (onLineUsers.size() > 0) {
//					labNum += onLineUsers.size();
//					labTime += latestLoginTime;
//				} else { // 在线用户数为 0, 通常属于异常状态
//					labNum += 0;
//				}
//			}
//		} catch (ServiceException e) {
//			logger.error(e.getXMLStackTraceString(e));
//			showErrorMessage(e.getTip());  
//			return;
//		}
//		
//		// 将参数作为方法参数返回前端
//		Parameter p_labOnline = new Parameter();
//		p_labOnline.setName("labOnline");
//		p_labOnline.setValue(labOnline);
//		Parameter p_labNum = new Parameter();
//		p_labNum.setName("labNum");
//		p_labNum.setValue(labNum);
//		Parameter p_labTime = new Parameter();
//		p_labTime.setName("labTime");
//		p_labTime.setValue(labTime);
//		context.addCommandParameter(p_labOnline);
//		context.addCommandParameter(p_labNum);
//		context.addCommandParameter(p_labTime);
//		// 刷新当前用户表数据
//		int userSize = onLineUsers.size();
//		for (int i = 0; i < userSize; i++) {
//			SessionUserHolder suser = (SessionUserHolder) onLineUsers.get(i);
//			//boolean isOver = overSession(suser.getLoginTime());
//
//			//if (isOver) {
//			//	onLineUsers.remove(i);
//			//} else {
//				Record newRec = ds.append();
//				newRec.setValue("opCode", suser.getLoginId());
//				newRec.setValue("opName", suser.getStaffName());
//				newRec.setValue("opUnit", suser.getUnitName());
//				newRec.setValue("ipAddr", suser.getLoginIp());
//				newRec.setValue("logTime", suser.getLoginTime());
//				newRec.setValue("onTime", onlineTime(suser.getLoginTime()));
//			//}
//		}
	}

	public String onlineTime(String strDate) {
		Date loginDate = DateToStringUserType.toDate(strDate, DateToStringUserType.DATA_TO_STRING_FORMATE);
		Date nowDate = new Date();
		DateToStringUserType.formatDate(new Date(), DateToStringUserType.DATA_TO_STRING_FORMATE);
		long l = nowDate.getTime() - loginDate.getTime();
		String tempStr = l / 3600000 + "小时" + (l % 3600000) / 60000 + "分钟" + ((l % 3600000) % 60000) / 1000 + "秒";
		return tempStr;
	}
//
//	private boolean overSession(String strDate) {
//		BaseEnv app = BaseEnv.getInstance();
//		String overDate = app.getSystemProp("monitor.overDate");
//
//		int overMin = -1;
//		if (overDate != null && !("".equals(overDate.trim()))) {
//			overMin = Integer.parseInt(overDate);
//		}
//		Date loginDate = DateToStringUserType.toDate(strDate, DateToStringUserType.DATA_TO_STRING_FORMATE);
//		Date nowDate = new Date();
//		DateToStringUserType.formatDate(new Date(), DateToStringUserType.DATA_TO_STRING_FORMATE);
//		long l = nowDate.getTime() - loginDate.getTime();
//
//		long onMin = l / 60000;
//
//		if (onMin > overMin) {
//			return true;
//		}
//
//		return false;
//	}
}
